Aspects of the present invention relate to caching data on a storage device, and more particularly to a method, system and computer program product for placement of data in shards on a caching appliance or other data storage device.
Data storage devices, such as a caching appliance or other storage device may be partitioned using different types of data storage units which may have different performance characteristics for storing different types or sets of data. The different types or sets of data that may have different requirements, such as persistence, accessibility or other characteristics. Multiple copies of the same software version may be stored on the different data storage units of a caching appliance or storage device. Vertical clustering refers to the practice of defining cluster members on the same physical machine, for example an application server. Experience has shown that a single application server which is implemented by a single Java Virtual Machine (JVM) process cannot always fully utilize the processor power and random access memory (RAM) of a large multiprocessor machine. Clustering with vertical cluster members provides a straightforward mechanism to create multiple JVM processes that together can fully utilize all the processing power and memory available. One drawback to clustering solutions is that they do not account for where the placement of these JVM processes or installations persist their run time related data. With respect to caching appliances and specifically caching data, there is a need for optimization with regard to where the data is persisted, how frequently the data is accessed and what the actual throughput is when accessing the data. There may also be Service Level Agreements that specify requirements with regard to persistence of the data, access speed, throughput when accessing the data as well as other performance characteristics or requirements.